#!/bin/bash

# 网络管理器GUI部署脚本
# 将程序及其依赖打包成独立运行的形式

set -e

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
BUILD_DIR="$SCRIPT_DIR"
DEPLOY_DIR="$SCRIPT_DIR/deploy"
APP_NAME="network_manager_gui"

echo "开始部署 $APP_NAME..."

# 清理之前的部署
rm -rf "$DEPLOY_DIR"
mkdir -p "$DEPLOY_DIR"

# 复制可执行文件
echo "复制可执行文件..."
cp "$BUILD_DIR/$APP_NAME" "$DEPLOY_DIR/"

# 创建lib目录
mkdir -p "$DEPLOY_DIR/lib"

# 获取依赖库列表
echo "分析依赖库..."
DEPS=$(ldd "$BUILD_DIR/$APP_NAME" | grep "=>" | awk '{print $3}' | grep -v "not found" | sort | uniq)

# 复制依赖库
echo "复制依赖库..."
for lib in $DEPS; do
    if [ -f "$lib" ]; then
        echo "复制: $lib"
        cp "$lib" "$DEPLOY_DIR/lib/"
    fi
done

# 修改可执行文件的RPATH，使其优先使用本地lib目录
echo "修改可执行文件的库路径..."
if command -v patchelf >/dev/null 2>&1; then
    patchelf --set-rpath '$ORIGIN/lib' "$DEPLOY_DIR/$APP_NAME"
    echo "使用patchelf设置RPATH成功"
else
    echo "警告: patchelf未安装，将使用启动脚本设置库路径"
fi

# 复制资源文件
echo "复制资源文件..."
mkdir -p "$DEPLOY_DIR/resources"
cp -r "$BUILD_DIR/resources"/* "$DEPLOY_DIR/resources/"

# 创建启动脚本
echo "创建启动脚本..."
cat > "$DEPLOY_DIR/run.sh" << 'EOF'
#!/bin/bash

# 网络管理器GUI启动脚本
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

# 设置库路径（如果patchelf未使用）
export LD_LIBRARY_PATH="$SCRIPT_DIR/lib:$LD_LIBRARY_PATH"

# 设置Qt插件路径
export QT_PLUGIN_PATH="$SCRIPT_DIR/lib/qt5/plugins"

# 启动程序
exec "$SCRIPT_DIR/network_manager_gui" "$@"
EOF

chmod +x "$DEPLOY_DIR/run.sh"

# 创建README文件
echo "创建说明文档..."
cat > "$DEPLOY_DIR/README.txt" << 'EOF'
LINUX网络连接管理器 - 独立运行版本

使用说明：
1. 确保目标系统是Linux x86_64架构
2. 运行 ./run.sh 启动程序
3. 如果遇到权限问题，请确保有足够的权限运行网络管理功能

系统要求：
- Linux x86_64
- 基本的X11图形环境
- 网络管理权限（通常需要sudo）

注意事项：
- 此版本包含所有必要的依赖库，无需额外安装
- 程序需要网络管理权限才能正常工作
- 建议在图形界面环境下运行

技术支持：
如有问题，请联系开发团队。
EOF

# 创建安装脚本
echo "创建安装脚本..."
cat > "$DEPLOY_DIR/install.sh" << 'EOF'
#!/bin/bash

# 网络管理器GUI安装脚本

set -e

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
INSTALL_DIR="/opt/network-manager-gui"
BIN_DIR="/usr/local/bin"

echo "安装网络管理器GUI..."

# 创建安装目录
sudo mkdir -p "$INSTALL_DIR"

# 复制文件
sudo cp -r "$SCRIPT_DIR"/* "$INSTALL_DIR/"

# 创建桌面快捷方式
sudo tee /usr/share/applications/network-manager-gui.desktop > /dev/null << 'DESKTOP'
[Desktop Entry]
Version=1.0
Type=Application
Name=网络连接管理器
Name[en]=Network Connection Manager
Comment=Linux网络连接管理器
Comment[en]=Linux Network Connection Manager
Exec=/opt/network-manager-gui/run.sh
Icon=/opt/network-manager-gui/resources/logo.png
Terminal=false
Categories=System;Network;
DESKTOP

# 创建命令行快捷方式
sudo ln -sf "$INSTALL_DIR/run.sh" "$BIN_DIR/network-manager-gui"

echo "安装完成！"
echo "可以通过以下方式启动程序："
echo "1. 桌面快捷方式"
echo "2. 命令行: network-manager-gui"
echo "3. 直接运行: $INSTALL_DIR/run.sh"
EOF

chmod +x "$DEPLOY_DIR/install.sh"

# 创建压缩包
echo "创建发布包..."
cd "$SCRIPT_DIR"
tar -czf "${APP_NAME}_standalone.tar.gz" deploy/

echo "部署完成！"
echo "独立运行版本已创建在: $DEPLOY_DIR"
echo "发布包已创建: ${APP_NAME}_standalone.tar.gz"
echo ""
echo "使用方法："
echo "1. 解压发布包到目标机器"
echo "2. 运行 ./deploy/run.sh 启动程序"
echo "3. 或运行 ./deploy/install.sh 安装到系统" 